#ifndef _SYS_MONTH_H_
#define _SYS_MONTH_H_

#include "Enum.h"
#include "SysTypes.h"

#define MONTH_VTABLE(self)   ((MonthVTable*)((FanObj*)self)->vtable)


extern Type*    Month_classType;
extern VTable*  Month_classVTable;


/* [sys::Month] Attributes */
struct Month
{
  Enum          super;
};


/* [sys::Month] Virtual-table */
typedef struct MonthVTable
{
  EnumVTable    super;
} MonthVTable;


/* [sys::Month] Methods and fields */
Month*          Month_jan(void);
Month*          Month_feb(void);
Month*          Month_mar(void);
Month*          Month_apr(void);
Month*          Month_may(void);
Month*          Month_jun(void);
Month*          Month_jul(void);
Month*          Month_aug(void);
Month*          Month_sep(void);
Month*          Month_oct(void);
Month*          Month_nov(void);
Month*          Month_dec(void);
List*           Month_vals(void);
Month*          Month_increment(Month* self);
Month*          Month_decrement(Month* self);
Int             Month_numDays(Month* self, Int year);
Str*            Month_toLocale_0(Month* self);
Str*            Month_toLocale(Month* self, Str* pattern);
Str*            Month_localeAbbr(Month* self);
Str*            Month_localeFull(Month* self);
Month*          Month_fromStr_1(Str* name);
Month*          Month_fromStr(Str* name, Bool checked);


/* [sys::Month] Type-system functions */
Type*           Month_initType(void);
VTable*         Month_initVTable(void);
void            Month_initStatic(void);


#endif
